/*
 *	Copyright (C) 2008 - Mauricio Bieze Stefani
 *	This file is part of the Insano Game Engine.
 *
 *	Insano is free software: you can redistribute it and/or modify
 *	it under the terms of the GNU General Public License as published by
 *	the Free Software Foundation, either version 3 of the License, or
 *	(at your option) any later version.
 *
 *	Insano is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *	GNU General Public License for more details.
 *
 *	You should have received a copy of the GNU General Public License
 *	along with Insano.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef GAMESERVER_H_INCLUDED
#define GAMESERVER_H_INCLUDED

#include "Protocolo.h"
#include "MBSSlot.h"
#include "SalaChat.h"
#include <sqlite3.h>
#include "ServerConfig.h"
#include "Account.h"
#include <irrlicht.h>

#define MAX_PLAYERS 64

class GameServer
{
public:
    GameServer();
    virtual ~GameServer();
    int run();

	SalaChat chat;
	ServerConfig config;
	MBSSlotManager slots;

	Account accounts[MAX_PLAYERS];
// TODO: std::map<std::string,Slot*> chars;

	sqlite3 *db;

	irr::IrrlichtDevice *device;

	int processPacket(int n, MBSSlot *slot, MBSBuffer *pacote);
	int sendChat(const char *remetente, const char *destinatario, const char *mensagem);
	void desconectar(int n);
};

#endif // GAMESERVER_H_INCLUDED
